Problem
【SCOI2007】组队
Description
每年都有球员选秀环节。通常用速度和身高两项数据来衡量一个篮球运动员的基本素质。假如一支球队里速度最慢的球员速度为,身高最矮的球员高度为,那么这支球队的所有队员都应该满足:。其中和为给定的经验值。这个式子很容易理解,如果一个球队的球员速度和身高差距太大,会造成配合的不协调。 请问作为球队管理层的你,在名选秀球员中,最多能有多少名符合条件的候选球员。
Input
第一行四个数。
下接行每行两个数描述一个球员的和。
Output
Sample Input
1 | 4 1 2 10 |
Sample Output
1 | 4 |
HINT
,和不大于。在长整型以内。
数据加强,程序未重测。
标签:双指针
Solution
挺神的题,两个序列上双指针的操作挺奇葩。
对于每个队员,令,将队员数组同时复制到中,分别排序。按照从小到大排序,按照从小到大排序。
首先按任意顺序枚举的最小值大小,不妨直接再中枚举。这时定义左指针和右指针和,只是与普通双指针不同的是,指向的是中的元素,指向的是中的元素,可以理解为中的右指针是不动的,中的左指针是不动的。这样精妙设计是考虑到中递增的值如果不满足要求,即小于枚举到的值,小于的部分一定是从前面开始的;同样地,中递增的值如果不满足要求,即大于,大于的部分一定是从后面开始的。这样对每个数组跑“单指针”即可得到可行最大子段,更新答案即可。
Code
1 |
|